package com.linkgie.galaxyframework.persistence.data;

import java.util.function.Function;

/**
 * 实体查询器；
 */
public interface EntityQuerier<T> extends QueryFieldsPredicater<T>, EntityOperators<T> {

    /**
     * 创建基于查询函数的断言链；
     * 
     * <p>
     * 此方法定义了新的查询链的起点；
     * <p>
     * 注：从逻辑上，此方法相当于定义了由括号'( )'包围的一组逻辑条件，例如： ( a.price > 1 and a.price < 2 ) .
     * 
     * @param queryFunction 查询函数；生成一组查询条件({@link QueryFieldPredication })；
     * @return
     */
    QueryFieldPredication<T> with(Function<EntityQuerier<T>, QueryFieldPredication<T>> queryFunction);

}
